# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper

  #Devuelve un tag para el icono de un boton
  #[nombreimagen] Nombre de la imagen png a utilizar
  def icono(nombreimagen)
    nombreimagen ? image_tag(nombreimagen.downcase() +".png", :class => "icono") : ''
  end

  #Crea un link con disenho de un boton
  #Utilize el simbolo *class* para especificar otro estilo CSS
  def boton(nombre, opciones = {}, html_options = nil, *para)
    html_options = {} if html_options.nil?
    html_options[:class] = "boton" unless html_options.has_key?(:class)
    #Calcula el nombre de la imagen
    img= html_options[:imagen].is_a?(String) ? html_options[:imagen] : (html_options[:imagen] ? nombre : false)
    link_to_if ver_link?(opciones,html_options[:method]),self.icono(img) + nombre, opciones, html_options, *para
  end

  def ver_link?(opciones,method)
    if opciones.is_a?(String)
      return true if opciones.include?('javascript:')
      opciones=opciones.split('?').first
      opciones.gsub!(ActionController::Base.relative_url_root, "") unless ActionController::Base.relative_url_root.nil?
      route=ActionController::Routing::Routes.recognize_path(opciones,:method=>:get)
    else
      route = opciones
    end
    route[:action]="destroy" if method==:delete
    #Perfil.check_permisos(route[:controller],route[:action],current_user)
    permissions_to_route?(route[:controller],route[:action])
  end

  def boton_ajax(nombre, opciones = {}, html_options = nil, *para)
    if html_options == nil
      html_options = {}
    end
    html_options[:class] = "boton" unless html_options.has_key?(:class)

    #Calcula el nombre de la imagen
    img = html_options.has_key?(:imagen) ? html_options[:imagen] : nombre
    if img.nil?
      ver_link?(opciones[:url],html_options[:method]) ? link_to_remote(nombre,                     opciones,:html=>html_options) : nombre
    else
      ver_link?(opciones[:url],html_options[:method]) ? link_to_remote((self.icono(img) + nombre), opciones,:html=>html_options) : nombre
    end

  end

  def boton_ajax_delete(object_path,opts={})
    opts[:text]||=""
    boton_ajax opts[:text], {:url => object_path,:method => :delete, :confirm => "Desea quitar este registro?"},{:imagen => "borrar"}
  end
  
  def render_usuario(object_name,label="Usuario")
    render :partial => "usuarios/actual", :locals => {:f => object_name, :label => label}
  end

  def render_flash_messages
    s = ''
    flash.each do |k,v|
      s << content_tag(:div, v, :class => "flash #{k}")
    end
    s
  end


  def zebra(obj)
    obj.id.even? ? 'even' : 'odd'
  end

  def month_name(month)
    if month
      I18n.localize(month,:format=>:month_name)
    end
  end
end

